package top.yxqz.spring.porxy;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 * @author: 余小小
 * @date: 2023/4/11
 * @description：静态代理类 一对一（类型一致），和目标类保持一致（功能）
 */
@Component
public class CalculatorStaticProxy implements Calculator {
    @Autowired
    private CalculatorImpl calculator;
//
//    public void setCalculator(CalculatorImpl calculator) {
//        this.calculator = calculator;
//    }

    @Override
    public int add(int i, int j) {
        System.out.println("这是i+j的实现");
        System.out.println("你的参数是" + i + "和" + j);

        int result = calculator.add(i, j);

        System.out.println("在add的实现中会在这里输出这个值是；" + result);

        return result;
    }

    @Override
    public int sub(int i, int j) {
        System.out.println("这里是i-j的实现");
        System.out.println("你的参数是" + i + "和" + j);

        int result = calculator.sub(i, j);

        System.out.println("在sub的实现中会在这里输出这个值是；" + result);
        return result;
    }

    @Override
    public int mul(int i, int j) {
        System.out.println("这里是i*j的实现");
        System.out.println("你的参数是" + i + "和" + j);

        int result = calculator.mul(i, j);


        System.out.println("在mul的实现中会在这里输出这个值是；" + result);
        return result;
    }

    @Override
    public int div(int i, int j) {
        System.out.println("这里是i/j的实现");
        System.out.println("你的参数是" + i + "和" + j);

        int result = calculator.div(i, j);

        System.out.println("在div的实现中会在这里输出这个值是；" + result);

        return result;
    }
}
